package czhcontroller

import (
	"Cgo/common"
	"Cgo/front/models"

	"github.com/gin-gonic/gin"
)

func CzhSynopsisController(r *gin.RouterGroup) {
	r.GET("/getDestinationByRegion", common.HandlerFunc(getDestinationByRegion))
	r.GET("/getDestinationById", common.HandlerFunc(getDestinationById))
	r.POST("/addDestinationOrder", common.HandlerFunc(addDestinationOrder))
	r.GET("/getDestinationOrderByUserId", common.HandlerFunc(getDestinationOrderByUserId))
	r.GET("/getAllDestination", common.HandlerFunc(getAllDestination))
	r.POST("/editDestination", common.HandlerFunc(editDestination))
	r.POST("/addDestination", common.HandlerFunc(addDestination))
	r.POST("/removeDestination", common.HandlerFunc(removeDestination))
}

// @Summary 根据地区查询相关推荐目的地
// @Schemes
// @Description 根据地区查询相关推荐目的地
// @Tags czh前台接口
// @Param region query string true "地区"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[[]models.CzhDestination]
// @Router /front/czh/destination/getDestinationByRegion [get]
func getDestinationByRegion(ctx *gin.Context) common.Result {
	region := ctx.Query("region")
	destinationList, err := DestinationDao.GetDestinationByRegion(region)
	if err != nil {
		return common.R.Fail("暂无地区相关推荐目的地")
	}
	return common.R.Success(destinationList)
}

// @Summary 根据id查询相关推荐目的地
// @Schemes
// @Description 根据id查询相关推荐目的地
// @Tags czh前台接口
// @Param id query string true "目的地id"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[models.CzhDestination]
// @Router /front/czh/destination/getDestinationById [get]
func getDestinationById(ctx *gin.Context) common.Result {
	id := ctx.Query("id")
	destinationL, err := DestinationDao.GetDestinationById(id)
	if err != nil {
		return common.R.Fail("暂无目的地数据")
	}
	return common.R.Success(destinationL)
}

// @Summary 目的地门票购买
// @Schemes
// @Description 目的地门票购买
// @Tags czh前台接口
// @Param destinationOrder body models.CzhDestinationOrder true "购买信息"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[string]
// @Router /front/czh/destination/addDestinationOrder [post]
func addDestinationOrder(ctx *gin.Context) common.Result {
	var destinationOrder models.CzhDestinationOrder
	err := ctx.ShouldBindJSON(&destinationOrder)
	if err != nil {
		return common.R.Fail("参数错误")
	}
	err = DestinationDao.AddDestinationOrder(destinationOrder.Name, destinationOrder.Userid, destinationOrder.Price, destinationOrder.Username, destinationOrder.People, destinationOrder.Coverimg)
	if err != nil {
		return common.R.Fail("购买失败")
	}
	return common.R.Success("购买成功")
}

// @Summary 根据用户id获取对应用户目的地订单信息
// @Schemes
// @Description 根据用户id获取对应用户目的地订单信息
// @Tags czh前台接口
// @Param userid query string true "用户id"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[[]models.CzhDestinationOrder]
// @Router /front/czh/destination/getDestinationOrderByUserId [get]
func getDestinationOrderByUserId(ctx *gin.Context) common.Result {
	userid := ctx.Query("userid")
	destinationOrderList, err := DestinationDao.GetDestinationOrderByUserId(userid)
	if err != nil {
		return common.R.Fail("暂无订单数据")
	}
	return common.R.Success(destinationOrderList)
}

// @Summary 获取所有目的地数据
// @Schemes
// @Description 获取所有目的地数据
// @Tags czh前台接口
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[[]models.CzhDestination]
// @Router /front/czh/destination/getAllDestination [get]
func getAllDestination(ctx *gin.Context) common.Result {
	allHotel, err := DestinationDao.GetAllDestination()
	if err != nil {
		return common.R.Fail("暂无目的地数据")
	}
	return common.R.Success(allHotel)
}

// @Summary 目的地编辑
// @Schemes
// @Description 目的地编辑
// @Tags czh前台接口
// @Param destination body models.CzhDestination true "目的地信息"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[string]
// @Router /front/czh/destination/editDestination [post]
func editDestination(ctx *gin.Context) common.Result {
	var destination models.CzhDestination
	err := ctx.ShouldBindJSON(&destination)
	if err != nil {
		return common.R.Fail("参数错误")
	}
	err = DestinationDao.DestinationEdit(destination.Id, destination.Coverimg, destination.Name, destination.Score, destination.Region, destination.Phone, destination.Traffic)
	if err != nil {
		return common.R.Fail("修改失败")
	}
	return common.R.Success("修改成功")
}

// @Summary 新增目的地
// @Schemes
// @Description 新增目的地
// @Tags czh前台接口
// @Param destination body models.CzhDestination true "目的地信息"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[string]
// @Router /front/czh/destination/addDestination [post]
func addDestination(ctx *gin.Context) common.Result {
	var destination models.CzhDestination
	err := ctx.ShouldBindJSON(&destination)
	if err != nil {
		return common.R.Fail("参数错误")
	}
	err = DestinationDao.DestinationAdd(destination.Coverimg, destination.Name, destination.Score, destination.Region, destination.Phone, destination.Traffic)
	if err != nil {
		return common.R.Fail("新增失败")
	}
	return common.R.Success("新增成功")
}

// @Summary 删除目的地
// @Schemes
// @Description 删除目的地
// @Tags czh前台接口
// @Param destination body models.CzhDestination true "目的地信息"
// @Accept json
// @Produce json
// @Success 200 {object} common.RT[string]
// @Router /front/czh/destination/removeDestination [post]
func removeDestination(ctx *gin.Context) common.Result {
	var destination models.CzhDestination
	err := ctx.ShouldBindJSON(&destination)
	if err != nil {
		return common.R.Fail("参数错误")
	}
	err = DestinationDao.DestinationRemove(destination.Id)
	if err != nil {
		return common.R.Fail("删除失败")
	}
	return common.R.Success("删除成功")
}
